<section>
<p>该部分涉及到的内容为django内部实现的内容，仅作为参考即可。编码过程基本不会用到</p>
<p><b>Field API reference</b></p>
<p><code>class Field</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field">[source]</a></p>
<p>Field是数据库表中列的抽象。Django使用Field来建立python类型到数据库类型的映射</p>
<p>description</p>
<p>该属性给Field类型添加一个详细的描述。这个属性的值会被django.contrib.admindocs用到(也就是自己写的代码一般用不到)。</p>
<p><code>get_internal_type()</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.get_internal_type">[source]</a></p>
<p>这个方法返回一个字符串，该字符串表示的是该字段对应的python类型</p>
<p><code>db_type(connection)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.db_type">[source]</a></p>
<p>该方法的返回值为Field对应的数据库列的类型</p>
<p><code>rel_db_type(connection)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.rel_db_type">[source]</a></p>
<p>返回类似ForeignKey和OneToOneField这种关系类型对应的数据库列的类型</p>
<p><code>get_prep_value(value)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.get_prep_value">[source]</a></p>
<p>value参数是这个Model属性当前的值，这个方法返回的数据是能够当做sql查询参数使用的对应格式的数据</p>
<p><code>get_db_prep_value(value, connection, prepared=False)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.get_db_prep_value">[source]</a></p>
<p>prepared为True时返回value，为False时返回get_prep_value(value)</p>
<p><code>from_db_value(value, expression, connection, context)</code></p>
<p>把从数据库拿到的数据转换成python对象，这个函数与get_prep_value的作用是相反的。</p>
<p><code>get_db_prep_save(value, connection)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.get_db_prep_save">[source]</a></p>
<p>该方法的同get_db_prep_value()，默认情况下该方法返回get_db_prep_value()的值，只不过，该方法在数据必须存入数据库的时候才会调用</p>
<p><code>pre_save(model_instance, add)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.pre_save">[source]</a></p>
<p>在get_db_prep_save()调用前调用，作用是对数据进行一些预处理。model_instance是该字段所属的model对象。add是说此对象是不是第一次执行save操作</p>
<p><code>to_python(value)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.to_python">[source]</a></p>
<p>该方法把字符串类型的数据转化成python对象</p>
<p><code>value_to_string(obj)</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.value_to_string">[source]</a></p>
<p>把python对象转为字符串</p>
<p><code>formfield(form_class=None, choices_form_class=None, **kwargs)</code><a href="">[source]</a></p>
<p>返回该字段的默认的django.forms.Field值</p>
<p><code>deconstruct()</code><a href="https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#Field.deconstruct">[source]</a></p>
<p>返回一个四元组，可以利用这个四元组的信息来重建这个Field的定义</p>
</section>
<section>
<p><b>Field attribute reference</b></p>
<p><code>Field.auto_created</code></p>
<p>该字段是否是自动添加的，例如id字段</p>
<p><code>Field.concrete</code></p>
<p>该字段是数据库中是否有对应的列</p>
<p><code>Field.hidden</code></p>
<p>是否隐藏字段，隐藏字段存有其他非隐藏字段实现必要的功能所需要的信息</p>
<p><code>Field.is_relation</code></p>
<p>是否是关系型字段</p>
<p><code>Field.model</code></p>
<p>概属性指向定义了该字段的Model实例</p>
<p>关系型字段特有的属性</p>
<p><code>Field.many_to_many</code></p>
<p>该字段是否为ManyToManyField类型</p>
<p><code>Field.many_to_one</code></p>
<p>该字段是否是ForeignKey类型</p>
<p><code>Field.one_to_many</code></p>
<p>该字段是否为ForeignKey的目标Model的字段</p>
<p><code>Field.one_to_one</code></p>
<p>字段是否为OneToOneField类型</p>
<p><code>Field.related_model</code></p>
<p>指向关联Model</p>
</section>